from datetime import datetime, timedelta
from flask import Blueprint, request, current_app, session
from util.result import Result
from util.captchaUtil import _generate_captcha_text, _generate_captcha_image

# 1. 创建验证码接口
api_bp = Blueprint('captcha', __name__)


# 3. 获取验证码接口
@api_bp.route('/captcha', methods=['GET'])
def get_captcha():
    try:
        # 1. 参数处理（原有逻辑不变）
        if not current_app.config.get('SECRET_KEY'):
            current_app.logger.error("未配置 SECRET_KEY，无法使用 Session 存储验证码")
            return Result.error("系统配置异常，无法生成验证码")

        # 2. 生成验证码文本和图片
        captcha_text = _generate_captcha_text()
        captcha_image = _generate_captcha_image(captcha_text)

        # 生成5分钟后过期的时间 → 转为字符串（格式：%Y-%m-%d %H:%M:%S，完全无时区）
        expire_datetime = datetime.now() + timedelta(minutes=5)
        expire_time = expire_datetime.strftime("%Y-%m-%d %H:%M:%S")  # 字符串格式时间

        # Session
        session['captcha_info'] = {
            'text': captcha_text.lower(),  # 转小写存储
            'expire_time': expire_time  # 存储字符串格式的过期时间
        }
        # 强制设置 Session 过期时间
        session.permanent = False

        # 4. 格式化返回数据
        result_data = {
            'captcha_image': captcha_image,
            'expire_seconds': 300,
            'create_time': datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        }

        return Result.success("获取验证码成功", data=result_data)

    except Exception as e:
        current_app.logger.error(f"获取验证码接口异常: {str(e)}")
        return Result.error("获取验证码失败，请稍后重试")